// 
// OV-chip 2.0 project
// 
// Digital Security (DS) group at Radboud Universiteit Nijmegen
// 
// Copyright (C) 2008, 2009
// 
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License as
// published by the Free Software Foundation; either version 2 of
// the License, or (at your option) any later version.
// 
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// General Public License in file COPYING in this or one of the
// parent directories for more details.
// 
// Created 13.1.09 by Hendrik
// 
// gui package doc
// 
// $Id: package-info.java,v 1.3 2009-05-14 17:57:29 tews Exp $


/** 
 * Demonstrator with GUI.
 * <P>
 *
 * The GUI demonstrator in this package combines several application,
 * which are in theory completely distinct, in one program. Each such
 * application or role has its own tab. 
 * <P>
 *
 * The GUI demonstrator attaches itself to one card reader that is
 * used for all roles. The card reader can be configured in the
 * configuration dialog and is about the only thing that is shared
 * between all roles.
 * <P>
 *
 * The three applications that are combined in the GUI demonstrator
 * are the PTLS office, the PTLS automaton and the entry gate.
 * <P>
 *
 * The PTLS office application runs in the PTLS office tab. It can be
 * used to create and manage sets of PTLS parameters (keys and bases)
 * and to issue new cards.
 * <P>
 *
 * The PTLS automaton runs in the PTLS automaton tab. It can be used
 * to update the attributes on a card and to issue a new signature for
 * the attribute expression of the card. Currently only randomly
 * chosen attribute updates are implemented in the GUI demonstrator
 * (this is however only a limitation in the GUI, the methods {@link
 * ds.ov2.front.RSA_host_card#resign RSA_host_card.resign} permits
 * arbitrarly chosen attribute updates).
 * <P>
 *
 * The entry gate runs in the entry gate tab. It checks whether the
 * card is capable of performing a zero knowlege proof for all its
 * attributes.
 * <P>
 *
 * The GUI demonstrator has been designed with the netbeans IDE, using
 * the swing framework. Because of certain limitations the GUI
 * demonstrator is designed in the following way. It runs two Java
 * threads, the GUI thread, controlling the GUI, and the terminal
 * thread, controlling the card reader terminal. The two threads
 * communicate by exchanging instances of {@link java.lang.Runnable} that are
 * created in one thread and executed in the other thread, see the
 * introduction of class {@link ds.ov2.gui.Terminal_thread}. Thereby the GUI
 * thread tells the terminal thread what to do with the card (i.e.,
 * which protocols to run) and the terminal thread updates the GUI
 * (enabling/disabling buttons, display information and progress
 * messages). 
 * <P>
 *
 * The code the manages the GUI is further divided in the graphical
 * layout code and the action code. The graphical layout code has been
 * generated by the netbeans IDE and creates and manages the various
 * windows with its components. The action code is hand-written and
 * contains the action to be performed when certain buttons/tabs in
 * the GUI are pressed/selected. Both the graphical layout code and
 * the action code are in the package ds.ov2.gui, however, the
 * graphical layout code is contained in the subdirectory
 * src/gui/netbeans/ov_demo_gui/src/ds/ov2/gui. Most of the action
 * code is in separate *_action classes in the subdirectory src/gui.
 * <P>
 *
 * To make it possible to test some parts of the GUI demonstrator from
 * within the netbeans IDE some action classes and also some other
 * classes are also present in
 * src/gui/netbeans/ov_demo_gui/src/ds/ov2/{front,gui}. The method
 * bodies there do however only contain at most one print statement. 
 *
 */
package ds.ov2.gui;
